package com.example.vo.respvo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.util.Date;
import java.util.Map;

/**
 * 任务信息类
 *
 * @author wsl
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@ApiModel(value = "任务视图模型类")
@JsonInclude(JsonInclude.Include.ALWAYS)
public class TaskVo {

    @ApiModelProperty("任务编号")
    private String id;

    @ApiModelProperty("任务名称")
    private String name;

    @ApiModelProperty("任务描述")
    private String description;

    @ApiModelProperty("任务优先级或紧急程度")
    private int priority;

    @ApiModelProperty("任务的负责人")
    private String owner;

    @ApiModelProperty("任务委托给的人")
    private String assignee;

    @ApiModelProperty("流程实例编号")
    private String processInstanceId;

    @ApiModelProperty("流程定义编号")
    private String processDefinitionId;

    @ApiModelProperty("任务的创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "Asia/Shanghai")
    private Date createTime;

    @ApiModelProperty("定义此任务的流程中的活动的id（略）")
    private String taskDefinitionKey;

    @ApiModelProperty("任务的结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "Asia/Shanghai")
    private Date dueData;

    @ApiModelProperty("分类")
    private String category;

    @ApiModelProperty("此任务是其子任务的父任务（略）")
    private String getParentTaskId;

    @ApiModelProperty("此任务的租户标识符（略）")
    private String tenantId;

    @ApiModelProperty("用户任务的表单键")
    private String formKey;

    @ApiModelProperty("空")
    private Map<String,Object> taskLocalVariables;

    @ApiModelProperty("空")
    private Map<String,Object> processVariables;

    @ApiModelProperty("获取任务的申领时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "Asia/Shanghai")
    private Date claimTime;

    @ApiModelProperty("获取业务主键")
    private String businessKey;
}
